﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using Business;
using Entity;

namespace WebService
{
    /// <summary>
    /// Ce WebService fourni toutes les méthodes business relatives aux actualités 
    /// nécessaires pour développer un client.
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // Pour autoriser l'appel de ce service Web depuis un script à l'aide d'ASP.NET AJAX, supprimez les marques de commentaire de la ligne suivante. 
    // [System.Web.Script.Services.ScriptService]
    public class ActualiteWS : System.Web.Services.WebService
    {
        [WebMethod]
        public List<ActualiteEWS> getActualiteDuMur(int idutilisateur)
        {
            List<Actualite> actualites = ActualiteService.getActualitesDuMur(idutilisateur);

            if (actualites != null)
            {
                List<ActualiteEWS> actualitesEWS = new List<ActualiteEWS>();

                foreach (Actualite actualite in actualites)
                    actualitesEWS.Add(new ActualiteEWS(actualite));

                return actualitesEWS;
            }
            else
                return null;
        }

        [WebMethod]
        public List<ActualiteEWS> getActualiteDuProfil(UtilisateurEWS utilisateurEWS, int idutilisateur)
        {
            // Conversion EWS vers Entity LINQ
            Utilisateur utilisateur = new Utilisateur();
            utilisateur.email = utilisateurEWS.email;
            utilisateur.password = utilisateurEWS.password;

            // On regarde s'il a le droit d'obtenir les informations
            if (DroitsService.estAmisAvec(utilisateur, idutilisateur))
            {
                List<Actualite> actualites = ActualiteService.getActualitesDuProfil(idutilisateur);

                if (actualites != null)
                {
                    List<ActualiteEWS> actualitesEWS = new List<ActualiteEWS>();

                    foreach (Actualite actualite in actualites)
                        actualitesEWS.Add(new ActualiteEWS(actualite));

                    return actualitesEWS;
                }
                else
                    return null;
            }
            else
                return null;
        }

        [WebMethod]
        public void ajouterActualite(int idutilisateur, string texte, DateTime date)
        {
            ActualiteService.ajouterActualite(idutilisateur, texte, date);
        }

        [WebMethod]
        public void ajouterCommentaire(int idstatut, int idutilisateur, string texte, DateTime date)
        {
            ActualiteService.ajouterCommentaire(idstatut, idutilisateur, texte, date);
        }

        [WebMethod]
        public void aimerStatut(int idstatut, int idutilisateur)
        {
            ActualiteService.aimer(idstatut, idutilisateur);
        }

        [WebMethod]
        public bool aimeStatut(int idstatut, int idutilisateur)
        {
            return ActualiteService.utilisateurAimeStatut(idstatut, idutilisateur);
        }

        [WebMethod]
        public void supprimerActualite(int idstatut)
        {
            ActualiteService.supprimerActualite(idstatut);
        }

    }
}
